package cn.tedu.oop2;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import org.w3c.dom.ls.LSOutput;

/*本类用于测试继承中构造方法的使用
* 1、子类在创建对象时，默认会先调用父类的构造方法
* 2、原因是子类构造函数中的第一行默认操作super（）;--表示调用父类的无参参数
* 3、当父类没有无参构造时，可以通过super（参数）调用父类的其它含参构造
* 子类必须调用一个父类的构造函数，不管是无参还是含参你，选一个即可
* 4、构造方法不可以被继承！因为语法的原因：要求构造方法的名字表现是本类类名
* 不能在子类中出现一个父类名字的构造方法*/
public class ExtendsDemo2 {
    public static void main(String[] args) {
//        通过父类的无参参数来创建父类对象
//        Father2 f = new Father2();
//        Father2 f1 = new Father2("哈哈哈");
        Son2 s =new Son2();
        Son5 s1 =new Son5();
        s.Father2("45");
    }
}
class Father2{
    static{
        System.out.println("123254");
    }
/*    public Father2(){
        System.out.println("我是父类的无参参数");
    }*/
    int a = 112;
    public String Father2(String s){
//        int a = 1;
        System.out.println("我是父类的含参参数"+s);
        return "45";
    }
}
class Son2 extends Father2{
    int a = 12;
    public Son2(){


//        super();//调用父类的无参构造
//        super("你好");
        {
            System.out.println("dfghj");
        }
        int a = 12;
        System.out.println(super.a);
        System.out.println(a);
        System.out.println(this.a);
        System.out.println("我是子类的无参构造");
    }
}
class Son5 extends Father2{
    int a = 12;
    public Son5(){


//        super();//调用父类的无参构造
//        super("你好");


        int a = 12;
        System.out.println(super.a);
        System.out.println(a);
        System.out.println(this.a);
        System.out.println("我是子类的无参构造");
    }
}
